Server-Sent Events
サーバからクライアントに向けてプッシュで情報を送信できる非同期通信
サーバ側は Content-Type: text/event-stream というヘッダを付けて送信する
クライアント側は、JavaScriptであれば EventSource インタフェースを用いてデータを受け取る WebSocketと比較したときに、HTTPを利用するため互換性は高いが、パフォーマンスは劣る JavaScriptクライアント
code:js
const eventSource = new EventSource('/api/sse');
eventSource.addEventListener('heck', (event) => {
console.log(event.data);
});
Node.js Fastify
code:js
import { FastifySSEPlugin } from 'fastify-sse-v2';
const server = fastify();
server.register(FastifySSEPlugin);
server.get('/api/sse', async (req, res) => {
for (let i = 0; i < 10; i ++) {
await sleep(1000);
res.sse({
event: 'heck',
data: Math.random().toFixed(6),
});
}
});